<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		
	<span class="different-posts different-posts_earlier">📖 <a href="/page/61">earlier posts</a> 📖</span>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/25. Linux 文件系统百科/">Linux 文件系统百科</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux文件系统中的文件是数据的集合，文件系统不仅包含着文件中的数据而且还有文件系统的结构，所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux 最早的文件系统是Minix，但是专门为Linux 设计的文件系统——扩展文件系统第二版或EXT2被设计出来并添加到Linux中，这对Linux产生了重大影响。EXT2文件系统功能强大、易扩充、性能上进行了全面优化，也是所有Linux发布和安装的标准文件系统类型。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;每个实际文件系统从操作系统和系统服务中分离出来，它们之间通过一个接口层：虚拟文件系统或VFS来通讯。VFS使得Linux可以支持多个不同的文件系统，每个表示一个VFS 的通用接口。由于软件将Linux 文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。Linux 的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在Linux文件系统中，作为一种特殊类型/proc文件系统只存在内存当中，而不占用内存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。/proc文件系统是一个伪文件系统，用户和应用程序可以通过/proc得到系统的信息，并可以改变内核的某些参数。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在Linux文件系统中，EXT2文件系统、虚拟文件系统、/proc文件系统是三个具有代表性的文件系统，本论文试图通过对他们的分析来研究Linux文件系统机制。并且在分析这三种文件系统的基础上对Linux文件系统操作进行了解、研究（本论文选取了open和close两种操作进行研究）。在第二部分中将介绍EXT2文件系统；第三部分论述虚拟文件系统的特点；第四部分简要介绍/proc文件系统；最后，介绍两种具体文件系统操作的实现。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套Linux系统支持若干物理盘，每个物理盘可定义一个或者多个文件系统。（类比于微机磁盘分区）。每个文件系统由逻辑块的序列组成，一个逻辑盘空间一般划分为几个用途各不相同的部分，即引导块、超级块、inode区以及数据区等。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;引导块：在文件系统的开头，通常为一个扇区，其中存放引导程序，用于读入并启动操作系统；超级块：用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块；inode区（索引节点）：一个文件或目录占据一个索引节点。第一个索引节点是该文件系统的根节点。利用根节点，可以把一个文件系统挂在另一个文件系统的非叶节点上；数据区：用于存放文件数据或者管理数据。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux最早引入的文件系统类型是MINIX。MINIX文件系统由MINIX操作系统定义，有一定的局限性，如文件名最长14个字符，文件最长64M字节。第一个专门为Linux设计的文件系统是EXT（Extended File System），但目前流行最广的是EXT2。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第二代扩展文件系统由Rey Card 设计，其目标是为Linux 提供一个强大的可扩展文件系统。它同时也是Linux界中设计最成功的文件系统。通过VFS的超级块（struct ext2_sb_info ext2_sb）可以访问EXT2的超级块，通过VFS的inode（struct ext2_inode_info ext2_i）可以访问EXT2的inode。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件系统EXT2的源代码在/usr/src/linux/fs/ext2目录下，它的数据结构在文件/usr/src/linux/include/linux/ext2_fs.h以及同一目录下的文件ext2_fs_i.h和ext2_fs_sb.h中定义。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;EXT2文件系统将它所占用的逻辑分区划分成块组（block group），如下图所示：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%99%BE%E7%A7%91/01.jpeg?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;和很多文件系统一样, EXT2 建立在数据被保存在数据块中的文件内这个前提下。这些数据块长度相等且这个长度可以变化，某个EXT2 文件系统的块大小在创建（使用mke2fs）时设置。每个文件的大小和刚好大于它的块大小正数倍相等。如果块大小为1024 字节而一个1025 字节长的文件将占据两个1024 字节大小的块。这样你不得不浪费差不多一半的空间。我们通常需要在CPU 的内存利用率和磁盘空间使用上进行折中。而大多数操作系统，包括Linux 在内，为了减少CPU 的工作负载而被迫选择相对较低的磁盘空间利用率。并不是文件中每个块都包含数据，其中有些块被用来包含描叙此文件系统结构的信息。EXT2通过一个inode 结构来描叙文件系统中文件并确定此文件系统的拓扑结构。inode 结构描叙文件中数据占据哪个块以及文件的存取权限、文件修改时间及文件类型。EXT2 文件系统中的每个文件用一个inode 来表示且每个inode 有唯一的编号。文件系统中所有的inode都被保存在inode 表中。 EXT2 目录仅是一个包含指向其目录入口指针的特殊文件（也用inode表示）。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对文件系统而言文件仅是一系列可读写的数据块。文件系统并不需要了解数据块应该放置到物理介质上什么位置，这些都是设备驱动的任务。无论何时只要文件系统需要从包含它的块设备中读取信息或数据，它将请求底层的设备驱动读取一个基本块大小整数倍的数据块。EXT2 文件系统将它所使用的逻辑分区划分成数据块组。每个数据块组将那些对文件系统完整性最重要的信息复制出来, 同时将实际文件和目录看作信息与数据块。为了发生灾难性事件时文件系统的修复，这些复制非常有必要。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%99%BE%E7%A7%91/01.jpeg?raw=true" alt=""></figure></p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/23. 如何区别NAS.SAN与DAS/">如何区别NAS.SAN与DAS</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SAN (Storage Attached Network)，即存储区域网络。为什么写NAS就不得不提到SAN呢?原因之一是它们的名字有69关系，容易混淆;之二是NAS和SAN既竞争又合作，很多高端NAS的后端存储就是SAN。NAS和SAN的整合也是存储设备的发展趋势，比如EMC的新产品VNX系列。右图展示了一台NAS的逻辑结构：双虚线框表示一台NAS。它通过Fibre Channel从后端SAN获得存储空间，创建文件系统后，再通过以太网共享给服务器。SAN提供的存储单位是LUN，属于block级别的。经过NAS创建成文件系统后，就变成文件级别的了。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/%E5%A6%82%E4%BD%95%E5%8C%BA%E5%88%ABNAS.SAN%E4%B8%8EDAS/01.jpeg?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果上边的逻辑图还不够清楚，可以看看下面的物理连接。NAS通过FC Switch连到SAN上，应用服务器再通过Ethernet Switch连到NAS上。同时SAN也直接提供block级别的存储给应用服务器。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/%E5%A6%82%E4%BD%95%E5%8C%BA%E5%88%ABNAS.SAN%E4%B8%8EDAS/02.jpeg?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;关于NAS和SAN的区别，可以列出很多来。比如带宽大小，距离长短，共享优劣等等。几乎所有区别都是由两个因素衍生出来的。一个是FC与Ethernet，另一个是block与file system。简而言之，如果用户需要通过FC访问block，就用SAN;如果需要通过Ethernet访问file system，就用NAS。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;除了NAS和SAN，还有一类存储设备经常被提到。那就是DAS (Direct Attached Storage) ，即“直连存储”。“直连”指服务器和存储设备之间没有FC网络，而是直接相连。比如我们都熟知的个人电脑就是DAS，因为磁盘被直连到了主板上。DAS已经存在很多年了，就算到今天也是很多服务器的理想选择。但是它的问题很多，而且也跟不上IT技术，比如虚拟化的发展。下面列举几个：</p>
<ol>
<li><p>可管理性差：每台服务器都使用自己的存储，光硬件的监控和维护就要花费不少时间。如果都要做容灾或备份，对于管理员简直是噩梦。</p>
</li>
<li><p>可扩展性差：在服务器安装结束后，如果发现存储空间分配过多，就造成了浪费。如果发现空间不足，要扩展也很麻烦。</p>
</li>
<li><p>跟不上IT发展趋势，比如不支持VMware VMotion等高级功能。</p>
</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SAN解决了这些问题。因为它既提供了统一的存储，同时又是一个网络。统一性和网络性给SAN带来了很多优势：</p>
<ol>
<li><p>可管理性：由一台SAN统一给多台服务器提供存储。无论是硬件的监控维护，还是数据的容灾备份，都只要在SAN上进行。使存储管理变得更轻松。</p>
</li>
<li><p>可扩展性：在物理层面，SAN支持数以百计的磁盘(比如EMC的CX4可以支持960块磁盘)，提供了海量的存储空间。在逻辑层面，这个海量空间可以按需要分成不同大小的LUN，再分配给服务器。LUN是逻辑设备，所以很容易扩展或迁移。</p>
</li>
<li><p>符合IT发展趋势：比如对炙手可热的虚拟化有很好的支持。</p>
</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当然，除了解决DAS的这些问题，SAN还有其他明显的优势：</p>
<ol>
<li>高性能:<br>a. SAN 更好的支持RAID，因为它拥有更多硬盘和更强的控制器。下图展示了RAID0对性能提升的基本原理：当有一大块数据写到RAID Group上，它可以被分成数小块，同时写到几个磁盘上。这就象有一批档案需要录入到电脑上，经理一个人打字需要做5天。分给5位员工一起做，一天就可以做完了。</li>
</ol>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/%E5%A6%82%E4%BD%95%E5%8C%BA%E5%88%ABNAS.SAN%E4%B8%8EDAS/03.jpeg?raw=true" alt=""></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;b. SAN有更大的cache。比如CX4的write cache可以达到10.7 GB。Cache对性能的提高也有明显的作用。</p>
<ol>
<li><p>更稳定：多机头，热备盘，多路径等机制杜绝了单点故障。</p>
</li>
<li><p>更安全：统一的容灾，备份和远程复制保证了数据的安全性。</p>
</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此外还有很多新技术，比如VNX的FASTCache和FASTVP。因为主要介绍NAS，SAN就不深入讨论了。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/%E5%A6%82%E4%BD%95%E5%8C%BA%E5%88%ABNAS.SAN%E4%B8%8EDAS/04.jpeg?raw=true" alt=""></figure></p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/22. parted 分区 GPT格式/">parted 分区 GPT 格式</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>我们讲的fdisk分区工具，它的分区格式为MBR，特点是，最多分4个主分区，磁盘大小不能超过2T。而GPT分区格式，突破了这些限制，它没有主分区、扩展分区、逻辑分区之分，在一块磁盘上最多可以分128个分区出来，支持大于2T的分区，最大卷可达18EB。</strong> 相信，随着存储级别的升级，将来的分区格式逐渐会淘汰MBR，而GPT成为主流。</p>
<h2 id="parted-工具常用功能："><a href="#parted-工具常用功能：" class="headerlink" title="parted 工具常用功能："></a>parted 工具常用功能：</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当在命令行输入parted后，进入parted命令的交互模式。输入help会显示帮助信息。下面就简单介绍一下常用的功能</p>
<ol>
<li><p><strong>check</strong> 简单检查文件系统。建议用其他命令检查文件系统，比如fsck</p>
</li>
<li><p><strong>help</strong> 显示帮助信息</p>
</li>
<li><p><strong>mklabel</strong> 创建分区表， 即是使用msdos（MBR）还是使用gpt，或者是其他方式分区表</p>
</li>
<li><p><strong>mkfs</strong> 创建文件系统。该命令不支持ext3 格式，因此建议不使用，最好是用parted分好区，然后退出parted交互模式，用其他命令进行分区，比如：mkfs.ext3</p>
</li>
<li><p><strong>mkpart</strong> 创建新分区。<br>格式：</p>
</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">mkpart PART-TYPE  [FS-TYPE]  START  END</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PART-TYPE 类型主要有primary（主分区）, extended（扩展分区）, logical（逻辑区）. 扩展分区和逻辑分区只对msdos。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fs-type   文件系统类型，主要有fs32，NTFS，ext2，ext3等<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;start end 分区的起始和结束位置。</p>
<ol>
<li><p><strong>mkpartfs</strong> 建立分区及其文件系统。目前还不支持ext3文件系统，因此不建议使用该功能。最后是分好区后，退出parted，然后用其他命令建立文件系统。</p>
</li>
<li><p><strong>print</strong> 输出分区信息。该功能有3个选项，<br>free 显示该盘的所有信息，并显示磁盘剩余空间<br>number 显示指定的分区的信息<br>all 显示所有磁盘信息</p>
</li>
<li><p><strong>resize</strong> 调整指定的分区的大小。目前对ext3格式支持不是很好，所以不建议使用该功能。</p>
</li>
<li><p><strong>rescue</strong> 恢复不小心删除的分区。如果不小心用parted的rm命令删除了一个分区，那么可以通过rescue功能进行恢复。恢复时需要给出分区的起始和结束的位置。然后parted就会在给定的范围内去寻找，并提示恢复分区。</p>
</li>
<li><p><strong>rm</strong> 删除分区。命令格式 rm  number 。如：rm 3 就是将编号为3的分区删除</p>
</li>
<li><p><strong>select</strong> 选择设备。当输入parted命令后直接回车进入交互模式是，如果有多块硬盘，需要用select 选择要操作的硬盘。如：select /dev/sdb</p>
</li>
<li><p><strong>set</strong> 设置标记。更改指定分区编号的标志。标志通常有如下几种：boot  hidden   raid   lvm 等。<br>boot 为引导分区，hidden 为隐藏分区，raid 软raid，lvm 为逻辑分区。<br>如：set 3  boot  on   设置分区号3 为启动分区<br>注：以上内容为parted常用的功能，由于该工具目前对ext3支持得不是很好，因此有些功能无法应用，比如move（移动分区）和resize等。</p>
</li>
</ol>
<h2 id="parted分区功能事例。"><a href="#parted分区功能事例。" class="headerlink" title="parted分区功能事例。"></a>parted分区功能事例。</h2><ol>
<li>用命令模式 为/dev/sdb创建gpt类型文件分区表,并分500G分区。然后为该分区创建ext3文件系统。并将该分区挂载在/test文件夹下。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#  parted  /dev/sdb  mklabel     —创建分区表</span></div><div class="line"><span class="comment">#  parted  /dev/sdb  mkpart  ext3  0  500000    —创建500G分区/dev/sdb1</span></div><div class="line"><span class="comment"># mkfs.ext3  /dev/sdb1      —-将分区/dev/sdb1格式化成ext3格式文件系统</span></div><div class="line"><span class="comment"># mount  /dev/sdb1 /test   —将/dev/sdb1 挂载在/test下</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果让系统自动挂载/dev/sdb1 需手工编辑/etc/fstab文件。并在文件末尾添加如下内容：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb1             /<span class="built_in">test</span>                ext3    defaults        0 0</div></pre></td></tr></table></figure>
<ol>
<li>创建大小为4G的交互分区。由于已经创建了500G的/dev/sdb1 ,因此再创建的分区为/dev/sdb2</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># parted /dev/sdb mkpart swap 500000 504000 —创建4G分区/dev/sdb2</span></div><div class="line"><span class="comment"># mkswap  /dev/sdb2   —-将/dev/sdb2创建为交换分区</span></div><div class="line"><span class="comment"># swapon /dev/sdb2   —-激活/dev/sdb2</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果让系统自动挂载/dev/sdb2这个交换分区，需手工编辑/etc/fstab文件。并在文件末尾添加如下内容：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb2             swap                swap    defaults        0 0</div></pre></td></tr></table></figure>
<ol>
<li>恢复被误删除的分区(也可以参考testdisk命令)。由于parted直接写磁盘，因此一旦不小心删除了某一分区，建议立即用rescue恢复。下面通过事例来理解恢复过程。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># parted /dev/sdb mkpart ext3 504000 514000 —-创建10G分区/dev/sdb3</span></div><div class="line"><span class="comment"># mkfs.ext3 /dev/sdb3  —将/dev/sdb3格式化成ext3文件系统。</span></div><div class="line"><span class="comment"># parted /dev/sdb rm 3 —-删除/dev/sdb3</span></div><div class="line"><span class="comment"># parted /dev/sdb rescue 504000 514000    —依照屏幕提示，输入yes即可恢复被误删除分区</span></div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/21. Linux 系统下查看raid信息，以及磁盘信息/">Linux 系统下查看raid信息，以及磁盘信息</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有时想知道服务器上有几块磁盘，如果没有做raid，则可以简单使用fdisk -l  就可以看到。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;但是做了raid呢，这样就看不出来了。那么如何查看服务器上做了raid？</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;软件raid：只能通过Linux系统本身来查看<br>　<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cat /proc/mdstat</div></pre></td></tr></table></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以看到raid级别，状态等信息。<br>　<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;硬件raid： 最佳的办法是通过已安装的raid厂商的管理工具来查看，有cmdline，也有图形界面。如Adaptec公司的硬件卡就可以通过下面的命令进行查看：<br>　<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># /usr/dpt/raidutil -L all</span></div></pre></td></tr></table></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;可以看到非常详细的信息。<br>　<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当然更多情况是没有安装相应的管理工具，只能依靠Linux本身的话一般我知道的是两种方式：<br>　<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># dmesg |grep -i raid</span></div><div class="line">　</div><div class="line"><span class="comment"># cat /proc/scsi/scsi</span></div></pre></td></tr></table></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;显示的信息差不多，raid的厂商，型号，级别，但无法查看各块硬盘的信息。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如下信息作为案例， 命令为  </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># fdisk -l </span></div><div class="line">Disk /dev/sda: 145.9 GB, 145999527936 bytes</div><div class="line">255 heads, 63 sectors/track, 17750 cylinders</div><div class="line">Units = cylinders of 16065 * 512 = 8225280 bytes</div><div class="line"></div><div class="line">   Device Boot      Start         End      Blocks   Id  System</div><div class="line">/dev/sda1   *           1          13      104391   83  Linux</div><div class="line">/dev/sda2              14       17750   142472452+  8e  Linux LVM</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># cat /proc/scsi/scsi</span></div><div class="line"></div><div class="line">Attached devices:</div><div class="line">Host: scsi0 Channel: 00 Id: 00 Lun: 00</div><div class="line">  Vendor: SEAGATE  Model:  ST3146356SS      Rev: HS09</div><div class="line">  Type:   Direct-Access                    ANSI SCSI revision: 05</div><div class="line">Host: scsi0 Channel: 00 Id: 01 Lun: 00</div><div class="line">  Vendor: SEAGATE  Model: ST3146356SS      Rev: HS09</div><div class="line">  Type:   Direct-Access                    ANSI SCSI revision: 05</div><div class="line">Host: scsi0 Channel: 01 Id: 00 Lun: 00</div><div class="line">  Vendor: Dell     Model: VIRTUAL DISK     Rev: 1028</div><div class="line">  Type:   Direct-Access                    ANSI SCSI revision: 05</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通过以上信息可以看出，该服务器有两块磁盘。品牌是希捷的，磁盘代号为 ST3146356SS，如果你熟悉细节磁盘的代号命名规则，你会轻易判定该磁盘大小为146G 。再根据fdisk 得出的结果可以判定，该服务器是拿两块146G的硬盘做的raid1.</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/20. Linux如何分大于2T的磁盘分区/">Linux如何分大于2T的磁盘分区</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;之前一直没有接触过大于2T的磁盘分区的情况，只是听说Linux下大于2T的磁盘分区有问题。当自己遇到的时候，才真实体会到。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用fdisk 工具分区的时候，如果分大于2T的分区，会提示：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">Value out of range.</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以不能使用fdisk这个分区工具了，要是用parted 来进行分区。 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我们使用fdisk -l  查看磁盘的时候会发现一段警告：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="string">"WARNING: The size of this disk is 8.0 TB (7995995979776 bytes).</span></div><div class="line"><span class="string">DOS partition table format can not be used on drives for volumes</span></div><div class="line"><span class="string">larger than 2.2 TB (2199023255040 bytes). Use parted(1) and GUID</span></div><div class="line"><span class="string">partition table format (GPT)."</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这是因为我的/dev/sdb磁盘是8T，超过了2T. 超过2T只能将磁盘转化成GPT格式，GPT格式的磁盘相当于把原来MBR磁盘中原来保留4个分区表的4*16个字节只保留第一个16个字节，其它的类似于扩展分区，真正的分区表在512字节后，因此对GPT分区表来说是没有4个主分区的限制。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>MBR分区表（主引导）</strong>：</p>
<ul>
<li>支持的最大卷：2T(1T=1024GB)</li>
<li>对分区的限制：最多4个主分区或3个主分区和一个扩展分区</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>GPT分区表（GUID分区表）</strong>：</p>
<ul>
<li>支持最大卷：18EB（1EB=1024T）</li>
<li>对分区的限制：每个磁盘最多支持128个分区</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;好的，下面看看如何使用parted 来分区这个8T的磁盘？</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我的打算是，sdb1 分一半也就是4T，sdb2分3T，sdb3分1T.</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div></pre></td><td class="code"><pre><div class="line">parted /dev/sdb1</div><div class="line">GNU Parted 1.8.1</div><div class="line">使用 /dev/sdb1</div><div class="line">Welcome to GNU Parted! Type <span class="string">'help'</span> to view a list of commands.</div><div class="line">(parted) <span class="built_in">help</span></div><div class="line">check NUMBER                             <span class="keyword">do</span> a simple check on the file system</div><div class="line">  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition</div><div class="line">  <span class="built_in">help</span> [COMMAND]                           prints general <span class="built_in">help</span>, or <span class="built_in">help</span> on COMMAND</div><div class="line">  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)</div><div class="line">  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partititon NUMBER</div><div class="line">  mkpart PART-TYPE [FS-TYPE] START END     make a partition</div><div class="line">  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system</div><div class="line">  move NUMBER START END                    move partition NUMBER</div><div class="line">  name NUMBER NAME                         name partition NUMBER as NAME</div><div class="line">  <span class="built_in">print</span> [free|NUMBER|all]                  display the partition table, a partition, or all devices</div><div class="line">  quit                                     <span class="built_in">exit</span> program</div><div class="line">  rescue START END                         rescue a lost partition near START and END</div><div class="line">  resize NUMBER START END                  resize partition NUMBER and its file system</div><div class="line">  rm NUMBER                                delete partition NUMBER</div><div class="line">  select DEVICE                            choose the device to edit</div><div class="line">  <span class="built_in">set</span> NUMBER FLAG STATE                    change the FLAG on partition NUMBER</div><div class="line">  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER</div><div class="line">  unit UNIT                                <span class="built_in">set</span> the default unit to UNIT</div><div class="line">  version                                  displays the current version of GNU Parted and copyright information</div><div class="line">(parted)</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以先使用 “help” 命令获取帮助。常用命令有：</p>
<ul>
<li>mklabel GPT：建立磁盘标签</li>
<li>print ：如果没有任何分区，它查看磁盘可用空间，当分区后，它会打印出分区情况</li>
<li>primary 0%  n% ：创建主分区，n为要分的分区占整个磁盘的百分比.（mkpart extended创建扩展分区），例如我这里要分一个占一半（4T）的分区，则写 0% 50%, 然后继续分3T “mkpart primary 51%  90%”, 再分一个1T的 “mkpart primary 91%  100%”</li>
<li>quit  ：分区完后，直接quit即可，不像fdisk分区的时候，还需要保存一下，这个不用。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以，我的命令为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">(parted) mklabel GPT</div><div class="line">(parted) <span class="built_in">print</span></div><div class="line">(parted) mkpart primary 0%  50%</div><div class="line">(parted) mkpart primary 51%  90%</div><div class="line">(parted) mkpart primary 91%  100%</div><div class="line">(parted) quit</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;分区完了首先需要把让内核知道添加新分区了：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">partprobe</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后就该格式化了:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">mkfs.ext3 /dev/sdb1</div><div class="line">mkfs.ext3 /dev/sdb2</div><div class="line">mkfs.ext3 /dev/sdb3</div></pre></td></tr></table></figure>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/19. tmpfs 是什么/">tmpfs 是什么</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我们df 的时候会看到一行 </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># df</span></div><div class="line">Filesystem                   1K-blocks    Used Available Use% Mounted on</div><div class="line">/dev/mapper/VolGroup-lv_root  18102140 1429428  15753160   9% /</div><div class="line">tmpfs                           146844       0    146844   0% /dev/shm</div><div class="line">/dev/sda1                       495844   31636    438608   7% /boot</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;它的大小为 146844，这个数值其实正好是内存大小的一半：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># free</span></div><div class="line">             total       used       free     shared    buffers     cached</div><div class="line">Mem:       293692     203528      90164          0      15880     125184</div><div class="line">-/+ buffers/cache:      62464     231228</div><div class="line">Swap:      2064376          0    2064376</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这个tmpfs到底是什么呢? 其实它是一个临时文件系统，驻留于内存中，使用它可以提高文件访问速度，并能保证重启时会自动清除这些文件。只不过驻留在这里的文件是容易丢失的，因为内存数据是不会像硬盘中的数据那样可以永久存在。知道了tmpfs的这个特性后，我们就可以把一些对读写性能要求较高，但是数据又可以丢失的这样的数据就可以保存在/dev/shm中，你也可以认为这里就是内存。既然/dev/shm是内存，那么想当然，我们不能把全部内存都挂载到这个目录下，系统默认只分一半是有道理的。那么我们能不能更改这个tmpfs的大小？ 当然可以！</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># mount -o remount,size=180M tmpfs /dev/shm</span></div><div class="line">[root@localhost ~]<span class="comment"># df -h</span></div><div class="line">Filesystem                    Size  Used Avail Use% Mounted on</div><div class="line">/dev/mapper/VolGroup-lv_root   18G  1.4G   16G   9% /</div><div class="line">tmpfs                         180M     0  180M   0% /dev/shm</div><div class="line">/dev/sda1                     485M   31M  429M   7% /boot</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以说，这个tmpfs是可以更改的，但这种办法知识临时的，重启后还会恢复内存大小的一半。那如何让他永久生效？、</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># vi /etc/fstab  //编辑/etc/fstab， 把tmpfs这一行改为：</span></div><div class="line">tmpfs                   /dev/shm                tmpfs   defaults,size=180M        0 0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样就可以啦。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/2. Linux 安装/">安装 CentOS</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>CentOS</strong>（Community Enterprise Operating System，中文意思是：社区企业操作系统）是Linux发行版之一，它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码，因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同，在于CentOS并不包含封闭源代码软件。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/01.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<h2 id="安装前准备"><a href="#安装前准备" class="headerlink" title="安装前准备"></a>安装前准备</h2><h3 id="下载安装包"><a href="#下载安装包" class="headerlink" title="下载安装包"></a>下载安装包</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux 是开源的系统，下载资源都应该在官方或者正规的镜像站下载，以保证下载包的安全 <a href="https://www.centos.org/" target="_blank" rel="external">CentOS官网</a>。这里下载 CentOS 7 为例.</p>
<h2 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;进入初始化界面，等待检查完就可以进入安装了，不想等待的按 ESC 退出也没有关系。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/02.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/03.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;接着就进入图形安装界面了</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/04.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;语言选择 “中文-简体中文”</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/05.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;选择“安装位置”，进行硬盘分区</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/06.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以选择自动分区和手动分区</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/07.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/08.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;选择“网络和主机”，设置主机名和网卡IP</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/09.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/10.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;进入“软件选择”，选择“最小安装”</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/11.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;开始安装</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/12.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装过程中可以设置 root 密码</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/13.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;同时也可以创建用户。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/14.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装完成重启系统</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/15.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/16.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;重启完成登录系统</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/linux%20%E5%AE%89%E8%A3%85/17.png?raw=true" alt="image"><figcaption class="figure__caption">image</figcaption></figure></p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/18. Linux 的文件系统/">Linux 的文件系统</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;搞计算机的应该都知道windows的系统格式化硬盘时会指定格式，fat 或者 ntfs。而 linux的文件系统格式为Ext3，或者Ext4 。早期的linux使用Ext2格式，目前的linux都使 用了Ext3, 而CentOS6已经使用了Ext4. Ext2文件系统虽然是高效稳定的。但是，随着  Linux系统在关键业务中的应用，Linux文件系统的弱点也渐渐显露出来了，因为Ext2文件系统是非日志文件系统。这在关键行业的应用是一个致命的弱点。Ext3文件系统是直接从  Ext2文件系统发展而来，Ext3文件系统带有日志功能，可以跟踪记录文件系统的变化，并将变化内容写入日志，写操作首先是对日志记录文件进行操作，若整个写操作由于某种原因 (如系统掉电) 而中断，系统重启时，会根据日志记录来恢复中断前的写操作，而且这个过程费时极短。目前Ext3文件系统已经非常稳定可靠。它完全兼容Ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是ext3日志文件系统初始设计的初衷。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;而现在我们使用的Ext4文件系统，较Ext3文件系统又有很多好的特性，最明显的特征是，Ext4支持的最大文件系统容量和单个最大文件大小，详细的区别阿铭不再介绍，这需要你到网上搜一下以丰富你的知识点。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux文件系统在windows中是不能识别的，但是在linux系统中你可以挂载的windows的文件系统，linux目前支持MS-DOS，VFAT，FAT，BSD等格式，如果你使用的是Redhat或者CentOS，那么请不要妄图挂载NTFS格式的分区到linux下，因为它不支持NTFS。虽然有些版本的linux支持NTFS，但不建议使用，因为目前的技术还不成熟。但有时，的确会有这方面 的需求，你可以安装ntfs-3g软件包来解决这个问题。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Ext3文件系统为早期版本Redhat/CentOS默认使用的文件系统，目前Ext4为默认文件系统，除了Ext3/Ext4文件系统外，有些linux发行版例如SuSE默认的文件系统为reiserFS, Ext3 独特的优点就是易于转换，很容易在 Ext2 和 Ext3 之间相互转换，而具有良好的兼容性，其它优点 ReiserFS 都有，而且还比它做得更好。如高效的磁盘空间利用和独特的搜寻方式都是Ext3 所不具备的，速度上它也不能和 ReiserFS相媲美，在实际使用过程中，reiserFS 也更加安全高效，据说反删除功能也不错。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReiserFS 的优势在于，它是基于 B*Tree 快速平衡树这种高效算法的文件系统，例如在处理小于 1k 的文件比 Ext文件系统快10倍。再一个就是ReiserFS空间浪费较少，它不会对一些小文件分配 inode，而是打包存放在同一个磁盘块 (簇) 中，Ext是把它们单独存放在不同的簇上，如簇大小为 4k，那么 2 个 100 字节的文件会占用 2 个簇，ReiserFS则只占用一个。当然ReiserFS也有缺点，就是每升级一个版本，都要将磁盘重新格式化一次。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/17. 系统和用户的环境变量配置文件/">系统和用户的环境变量配置文件</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;linux系统中，有很多系统的变量，这些变量被存在</p>
<ul>
<li><p><code>/etc/profile</code>: 这个文件预设了几个重要的变量，例如 PATH , USER , LOGNAME , MAIL , INPUTRC , HOSTNAME , HISTSIZE , umake等等。</p>
</li>
<li><p><code>/etc/bashrc</code>: 这个文件主要预设umake以及PS1。这个PS1就是我们在敲命令的时，前面那串字符了，例如CentOS root用户默认PS1就是[root@localhost~]#，PS1的值。</p>
</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># echo $PS1</span></div><div class="line">[\u@\h \W]\$</div></pre></td></tr></table></figure>
<ul>
<li>/u 就是用户，/h 主机名，/W 则是当前目录，/$ 就是那个‘#’了。如果普通用户显示为‘$’。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;除了两个系统级别的配置文件外，每个用户的主目录下还有几个这样的隐藏文件：</p>
<ul>
<li><code>.bash_proffile</code>: 定义了用户的个人划路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息，当用户登录时，该文件仅仅执行一次。</li>
<li><code>.bash_history</code>: 记录命令历史用的。</li>
<li><code>.bash_logout</code>: 当退出shell时，会执行该文件。可以把一些清理的工作放到这个文件中。</li>
</ul>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/16. Linux 环境变量之“PS1”/">Linux 环境变量之“PS1”</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PS1（是数字1而不是字母l），每个版本bash的PS1变量内的特殊符号可能有些小的差异，你可以先man bash 一下。下面是FC4环境下默认的特殊符号所代表的意义：</p>
<ul>
<li><p>\d   ：代表日期，格式为weekday month date，例如：”Mon Aug 1”</p>
</li>
<li><p>\H ：完整的主机名称。例如：我的机器名称为：fc4.linux，则这个名称就是fc4.linux</p>
</li>
<li><p>\h ：仅取主机的第一个名字，如上例，则为fc4，.linux则被省略</p>
</li>
<li><p>\t ：显示时间为24小时格式，如：HH：MM：SS</p>
</li>
<li><p>\T ：显示时间为12小时格式</p>
</li>
<li><p>\A ：显示时间为24小时格式：HH：MM</p>
</li>
<li><p>\u ：当前用户的账号名称</p>
</li>
<li><p>\v ：BASH的版本信息</p>
</li>
<li><p>\w ：完整的工作目录名称。家目录会以 ~代替</p>
</li>
<li><p>\W ：利用basename取得工作目录名称，所以只会列出最后一个目录</p>
</li>
<li><p>\# ：下达的第几个命令</p>
</li>
<li><p>\$ ：提示字符，如果是root时，提示符为：#   ，普通用户则为：$</p>
</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;默认的PS1内容为： ‘[\u@\h \W]\$ ‘ ，所以默认的提示符就是： [root@localhost ~]# 。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;但设置PS1的时候需要稍微处理一下</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">PS1=<span class="string">"[\\u@\\h \\W]\\$ "</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样显示的结果才是正确的</p>

	

	

</article>





	<span class="different-posts">📖 <a href="/page/63">more posts</a> 📖</span>



	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
